# -*- coding: utf-8 -*-
# Copyright 2024 The DLRover Authors. All rights reserved.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: brain.proto
from google.protobuf import empty_pb2 as _empty_pb2
from google.protobuf.internal import containers as _containers
from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from typing import (
    ClassVar as _ClassVar,
    Iterable as _Iterable,
    Mapping as _Mapping,
    Optional as _Optional,
    Union as _Union,
)

DESCRIPTOR: _descriptor.FileDescriptor

class MetricsType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
    __slots__ = []
    Training_Hyper_Params: _ClassVar[MetricsType]
    Workflow_Feature: _ClassVar[MetricsType]
    Training_Set_Feature: _ClassVar[MetricsType]
    Model_Feature: _ClassVar[MetricsType]
    Runtime_Info: _ClassVar[MetricsType]
    Job_Exit_Reason: _ClassVar[MetricsType]
    Optimization_Result: _ClassVar[MetricsType]
    Type: _ClassVar[MetricsType]
    Resource: _ClassVar[MetricsType]
    Customized_Data: _ClassVar[MetricsType]
    Optimization: _ClassVar[MetricsType]

Training_Hyper_Params: MetricsType
Workflow_Feature: MetricsType
Training_Set_Feature: MetricsType
Model_Feature: MetricsType
Runtime_Info: MetricsType
Job_Exit_Reason: MetricsType
Optimization_Result: MetricsType
Type: MetricsType
Resource: MetricsType
Customized_Data: MetricsType
Optimization: MetricsType

class TrainingHyperParams(_message.Message):
    __slots__ = ["batch_size", "epoch", "max_steps"]
    BATCH_SIZE_FIELD_NUMBER: _ClassVar[int]
    EPOCH_FIELD_NUMBER: _ClassVar[int]
    MAX_STEPS_FIELD_NUMBER: _ClassVar[int]
    batch_size: int
    epoch: int
    max_steps: int
    def __init__(
        self,
        batch_size: _Optional[int] = ...,
        epoch: _Optional[int] = ...,
        max_steps: _Optional[int] = ...,
    ) -> None: ...

class WorkflowFeature(_message.Message):
    __slots__ = [
        "job_name",
        "user_id",
        "code_address",
        "workflow_id",
        "node_id",
        "odps_project",
        "is_prod",
    ]
    JOB_NAME_FIELD_NUMBER: _ClassVar[int]
    USER_ID_FIELD_NUMBER: _ClassVar[int]
    CODE_ADDRESS_FIELD_NUMBER: _ClassVar[int]
    WORKFLOW_ID_FIELD_NUMBER: _ClassVar[int]
    NODE_ID_FIELD_NUMBER: _ClassVar[int]
    ODPS_PROJECT_FIELD_NUMBER: _ClassVar[int]
    IS_PROD_FIELD_NUMBER: _ClassVar[int]
    job_name: str
    user_id: str
    code_address: str
    workflow_id: str
    node_id: str
    odps_project: str
    is_prod: bool
    def __init__(
        self,
        job_name: _Optional[str] = ...,
        user_id: _Optional[str] = ...,
        code_address: _Optional[str] = ...,
        workflow_id: _Optional[str] = ...,
        node_id: _Optional[str] = ...,
        odps_project: _Optional[str] = ...,
        is_prod: bool = ...,
    ) -> None: ...

class TrainingSetFeature(_message.Message):
    __slots__ = [
        "dataset_size",
        "dataset_name",
        "sparse_item_count",
        "sparse_features",
        "sparse_feature_groups",
        "sparse_feature_shapes",
        "dense_features",
        "dense_feature_shapes",
        "storage_size",
    ]
    DATASET_SIZE_FIELD_NUMBER: _ClassVar[int]
    DATASET_NAME_FIELD_NUMBER: _ClassVar[int]
    SPARSE_ITEM_COUNT_FIELD_NUMBER: _ClassVar[int]
    SPARSE_FEATURES_FIELD_NUMBER: _ClassVar[int]
    SPARSE_FEATURE_GROUPS_FIELD_NUMBER: _ClassVar[int]
    SPARSE_FEATURE_SHAPES_FIELD_NUMBER: _ClassVar[int]
    DENSE_FEATURES_FIELD_NUMBER: _ClassVar[int]
    DENSE_FEATURE_SHAPES_FIELD_NUMBER: _ClassVar[int]
    STORAGE_SIZE_FIELD_NUMBER: _ClassVar[int]
    dataset_size: int
    dataset_name: str
    sparse_item_count: int
    sparse_features: str
    sparse_feature_groups: str
    sparse_feature_shapes: str
    dense_features: str
    dense_feature_shapes: str
    storage_size: int
    def __init__(
        self,
        dataset_size: _Optional[int] = ...,
        dataset_name: _Optional[str] = ...,
        sparse_item_count: _Optional[int] = ...,
        sparse_features: _Optional[str] = ...,
        sparse_feature_groups: _Optional[str] = ...,
        sparse_feature_shapes: _Optional[str] = ...,
        dense_features: _Optional[str] = ...,
        dense_feature_shapes: _Optional[str] = ...,
        storage_size: _Optional[int] = ...,
    ) -> None: ...

class ModelFeature(_message.Message):
    __slots__ = [
        "variable_count",
        "op_count",
        "embedding_dimension",
        "total_variable_size",
        "max_variable_size",
        "update_op_count",
        "read_op_count",
        "input_fetch_dur",
        "flops",
        "recv_op_count",
        "kv_embedding_dims",
        "tensor_alloc_bytes",
    ]

    class TensorAllocBytesEntry(_message.Message):
        __slots__ = ["key", "value"]
        KEY_FIELD_NUMBER: _ClassVar[int]
        VALUE_FIELD_NUMBER: _ClassVar[int]
        key: str
        value: int
        def __init__(
            self, key: _Optional[str] = ..., value: _Optional[int] = ...
        ) -> None: ...

    VARIABLE_COUNT_FIELD_NUMBER: _ClassVar[int]
    OP_COUNT_FIELD_NUMBER: _ClassVar[int]
    EMBEDDING_DIMENSION_FIELD_NUMBER: _ClassVar[int]
    TOTAL_VARIABLE_SIZE_FIELD_NUMBER: _ClassVar[int]
    MAX_VARIABLE_SIZE_FIELD_NUMBER: _ClassVar[int]
    UPDATE_OP_COUNT_FIELD_NUMBER: _ClassVar[int]
    READ_OP_COUNT_FIELD_NUMBER: _ClassVar[int]
    INPUT_FETCH_DUR_FIELD_NUMBER: _ClassVar[int]
    FLOPS_FIELD_NUMBER: _ClassVar[int]
    RECV_OP_COUNT_FIELD_NUMBER: _ClassVar[int]
    KV_EMBEDDING_DIMS_FIELD_NUMBER: _ClassVar[int]
    TENSOR_ALLOC_BYTES_FIELD_NUMBER: _ClassVar[int]
    variable_count: int
    op_count: int
    embedding_dimension: int
    total_variable_size: int
    max_variable_size: int
    update_op_count: int
    read_op_count: int
    input_fetch_dur: int
    flops: int
    recv_op_count: int
    kv_embedding_dims: _containers.RepeatedScalarFieldContainer[int]
    tensor_alloc_bytes: _containers.ScalarMap[str, int]
    def __init__(
        self,
        variable_count: _Optional[int] = ...,
        op_count: _Optional[int] = ...,
        embedding_dimension: _Optional[int] = ...,
        total_variable_size: _Optional[int] = ...,
        max_variable_size: _Optional[int] = ...,
        update_op_count: _Optional[int] = ...,
        read_op_count: _Optional[int] = ...,
        input_fetch_dur: _Optional[int] = ...,
        flops: _Optional[int] = ...,
        recv_op_count: _Optional[int] = ...,
        kv_embedding_dims: _Optional[_Iterable[int]] = ...,
        tensor_alloc_bytes: _Optional[_Mapping[str, int]] = ...,
    ) -> None: ...

class RuntimeInfo(_message.Message):
    __slots__ = ["global_step", "running_pods", "time_stamp", "speed"]
    GLOBAL_STEP_FIELD_NUMBER: _ClassVar[int]
    RUNNING_PODS_FIELD_NUMBER: _ClassVar[int]
    TIME_STAMP_FIELD_NUMBER: _ClassVar[int]
    SPEED_FIELD_NUMBER: _ClassVar[int]
    global_step: int
    running_pods: _containers.RepeatedCompositeFieldContainer[PodMeta]
    time_stamp: int
    speed: float
    def __init__(
        self,
        global_step: _Optional[int] = ...,
        running_pods: _Optional[_Iterable[_Union[PodMeta, _Mapping]]] = ...,
        time_stamp: _Optional[int] = ...,
        speed: _Optional[float] = ...,
    ) -> None: ...

class PodMeta(_message.Message):
    __slots__ = [
        "pod_name",
        "pod_ip",
        "node_ip",
        "host_name",
        "namespace",
        "is_mixed",
        "mem_usage",
        "cpu_usage",
    ]
    POD_NAME_FIELD_NUMBER: _ClassVar[int]
    POD_IP_FIELD_NUMBER: _ClassVar[int]
    NODE_IP_FIELD_NUMBER: _ClassVar[int]
    HOST_NAME_FIELD_NUMBER: _ClassVar[int]
    NAMESPACE_FIELD_NUMBER: _ClassVar[int]
    IS_MIXED_FIELD_NUMBER: _ClassVar[int]
    MEM_USAGE_FIELD_NUMBER: _ClassVar[int]
    CPU_USAGE_FIELD_NUMBER: _ClassVar[int]
    pod_name: str
    pod_ip: str
    node_ip: str
    host_name: str
    namespace: str
    is_mixed: bool
    mem_usage: float
    cpu_usage: float
    def __init__(
        self,
        pod_name: _Optional[str] = ...,
        pod_ip: _Optional[str] = ...,
        node_ip: _Optional[str] = ...,
        host_name: _Optional[str] = ...,
        namespace: _Optional[str] = ...,
        is_mixed: bool = ...,
        mem_usage: _Optional[float] = ...,
        cpu_usage: _Optional[float] = ...,
    ) -> None: ...

class JobMeta(_message.Message):
    __slots__ = ["uuid", "name", "user", "cluster", "namespace"]
    UUID_FIELD_NUMBER: _ClassVar[int]
    NAME_FIELD_NUMBER: _ClassVar[int]
    USER_FIELD_NUMBER: _ClassVar[int]
    CLUSTER_FIELD_NUMBER: _ClassVar[int]
    NAMESPACE_FIELD_NUMBER: _ClassVar[int]
    uuid: str
    name: str
    user: str
    cluster: str
    namespace: str
    def __init__(
        self,
        uuid: _Optional[str] = ...,
        name: _Optional[str] = ...,
        user: _Optional[str] = ...,
        cluster: _Optional[str] = ...,
        namespace: _Optional[str] = ...,
    ) -> None: ...

class JobMetrics(_message.Message):
    __slots__ = [
        "data_store",
        "job_meta",
        "metrics_type",
        "training_hyper_params",
        "workflow_feature",
        "training_set_feature",
        "model_feature",
        "runtime_info",
        "job_exit_reason",
        "extra_info",
        "type",
        "resource",
        "customized_data",
        "job_optimization",
    ]
    DATA_STORE_FIELD_NUMBER: _ClassVar[int]
    JOB_META_FIELD_NUMBER: _ClassVar[int]
    METRICS_TYPE_FIELD_NUMBER: _ClassVar[int]
    TRAINING_HYPER_PARAMS_FIELD_NUMBER: _ClassVar[int]
    WORKFLOW_FEATURE_FIELD_NUMBER: _ClassVar[int]
    TRAINING_SET_FEATURE_FIELD_NUMBER: _ClassVar[int]
    MODEL_FEATURE_FIELD_NUMBER: _ClassVar[int]
    RUNTIME_INFO_FIELD_NUMBER: _ClassVar[int]
    JOB_EXIT_REASON_FIELD_NUMBER: _ClassVar[int]
    EXTRA_INFO_FIELD_NUMBER: _ClassVar[int]
    TYPE_FIELD_NUMBER: _ClassVar[int]
    RESOURCE_FIELD_NUMBER: _ClassVar[int]
    CUSTOMIZED_DATA_FIELD_NUMBER: _ClassVar[int]
    JOB_OPTIMIZATION_FIELD_NUMBER: _ClassVar[int]
    data_store: str
    job_meta: JobMeta
    metrics_type: MetricsType
    training_hyper_params: TrainingHyperParams
    workflow_feature: WorkflowFeature
    training_set_feature: TrainingSetFeature
    model_feature: ModelFeature
    runtime_info: RuntimeInfo
    job_exit_reason: str
    extra_info: str
    type: str
    resource: str
    customized_data: str
    job_optimization: JobOptimization
    def __init__(
        self,
        data_store: _Optional[str] = ...,
        job_meta: _Optional[_Union[JobMeta, _Mapping]] = ...,
        metrics_type: _Optional[_Union[MetricsType, str]] = ...,
        training_hyper_params: _Optional[
            _Union[TrainingHyperParams, _Mapping]
        ] = ...,
        workflow_feature: _Optional[_Union[WorkflowFeature, _Mapping]] = ...,
        training_set_feature: _Optional[
            _Union[TrainingSetFeature, _Mapping]
        ] = ...,
        model_feature: _Optional[_Union[ModelFeature, _Mapping]] = ...,
        runtime_info: _Optional[_Union[RuntimeInfo, _Mapping]] = ...,
        job_exit_reason: _Optional[str] = ...,
        extra_info: _Optional[str] = ...,
        type: _Optional[str] = ...,
        resource: _Optional[str] = ...,
        customized_data: _Optional[str] = ...,
        job_optimization: _Optional[_Union[JobOptimization, _Mapping]] = ...,
    ) -> None: ...

class OptimizeConfig(_message.Message):
    __slots__ = [
        "optimizer_config_retriever",
        "data_store",
        "brain_processor",
        "customized_config",
    ]

    class CustomizedConfigEntry(_message.Message):
        __slots__ = ["key", "value"]
        KEY_FIELD_NUMBER: _ClassVar[int]
        VALUE_FIELD_NUMBER: _ClassVar[int]
        key: str
        value: str
        def __init__(
            self, key: _Optional[str] = ..., value: _Optional[str] = ...
        ) -> None: ...

    OPTIMIZER_CONFIG_RETRIEVER_FIELD_NUMBER: _ClassVar[int]
    DATA_STORE_FIELD_NUMBER: _ClassVar[int]
    BRAIN_PROCESSOR_FIELD_NUMBER: _ClassVar[int]
    CUSTOMIZED_CONFIG_FIELD_NUMBER: _ClassVar[int]
    optimizer_config_retriever: str
    data_store: str
    brain_processor: str
    customized_config: _containers.ScalarMap[str, str]
    def __init__(
        self,
        optimizer_config_retriever: _Optional[str] = ...,
        data_store: _Optional[str] = ...,
        brain_processor: _Optional[str] = ...,
        customized_config: _Optional[_Mapping[str, str]] = ...,
    ) -> None: ...

class PodState(_message.Message):
    __slots__ = [
        "name",
        "uid",
        "type",
        "is_oom",
        "resource",
        "used_resource",
        "customized_data",
    ]

    class CustomizedDataEntry(_message.Message):
        __slots__ = ["key", "value"]
        KEY_FIELD_NUMBER: _ClassVar[int]
        VALUE_FIELD_NUMBER: _ClassVar[int]
        key: str
        value: str
        def __init__(
            self, key: _Optional[str] = ..., value: _Optional[str] = ...
        ) -> None: ...

    NAME_FIELD_NUMBER: _ClassVar[int]
    UID_FIELD_NUMBER: _ClassVar[int]
    TYPE_FIELD_NUMBER: _ClassVar[int]
    IS_OOM_FIELD_NUMBER: _ClassVar[int]
    RESOURCE_FIELD_NUMBER: _ClassVar[int]
    USED_RESOURCE_FIELD_NUMBER: _ClassVar[int]
    CUSTOMIZED_DATA_FIELD_NUMBER: _ClassVar[int]
    name: str
    uid: str
    type: str
    is_oom: bool
    resource: PodResource
    used_resource: PodResource
    customized_data: _containers.ScalarMap[str, str]
    def __init__(
        self,
        name: _Optional[str] = ...,
        uid: _Optional[str] = ...,
        type: _Optional[str] = ...,
        is_oom: bool = ...,
        resource: _Optional[_Union[PodResource, _Mapping]] = ...,
        used_resource: _Optional[_Union[PodResource, _Mapping]] = ...,
        customized_data: _Optional[_Mapping[str, str]] = ...,
    ) -> None: ...

class JobState(_message.Message):
    __slots__ = ["timestamp", "pods", "speed", "customized_data"]

    class PodsEntry(_message.Message):
        __slots__ = ["key", "value"]
        KEY_FIELD_NUMBER: _ClassVar[int]
        VALUE_FIELD_NUMBER: _ClassVar[int]
        key: str
        value: PodState
        def __init__(
            self,
            key: _Optional[str] = ...,
            value: _Optional[_Union[PodState, _Mapping]] = ...,
        ) -> None: ...

    class CustomizedDataEntry(_message.Message):
        __slots__ = ["key", "value"]
        KEY_FIELD_NUMBER: _ClassVar[int]
        VALUE_FIELD_NUMBER: _ClassVar[int]
        key: str
        value: str
        def __init__(
            self, key: _Optional[str] = ..., value: _Optional[str] = ...
        ) -> None: ...

    TIMESTAMP_FIELD_NUMBER: _ClassVar[int]
    PODS_FIELD_NUMBER: _ClassVar[int]
    SPEED_FIELD_NUMBER: _ClassVar[int]
    CUSTOMIZED_DATA_FIELD_NUMBER: _ClassVar[int]
    timestamp: int
    pods: _containers.MessageMap[str, PodState]
    speed: float
    customized_data: _containers.ScalarMap[str, str]
    def __init__(
        self,
        timestamp: _Optional[int] = ...,
        pods: _Optional[_Mapping[str, PodState]] = ...,
        speed: _Optional[float] = ...,
        customized_data: _Optional[_Mapping[str, str]] = ...,
    ) -> None: ...

class OptimizeJobMeta(_message.Message):
    __slots__ = ["uid", "cluster", "namespace", "state"]
    UID_FIELD_NUMBER: _ClassVar[int]
    CLUSTER_FIELD_NUMBER: _ClassVar[int]
    NAMESPACE_FIELD_NUMBER: _ClassVar[int]
    STATE_FIELD_NUMBER: _ClassVar[int]
    uid: str
    cluster: str
    namespace: str
    state: JobState
    def __init__(
        self,
        uid: _Optional[str] = ...,
        cluster: _Optional[str] = ...,
        namespace: _Optional[str] = ...,
        state: _Optional[_Union[JobState, _Mapping]] = ...,
    ) -> None: ...

class OptimizeRequest(_message.Message):
    __slots__ = ["type", "config", "jobs"]
    TYPE_FIELD_NUMBER: _ClassVar[int]
    CONFIG_FIELD_NUMBER: _ClassVar[int]
    JOBS_FIELD_NUMBER: _ClassVar[int]
    type: str
    config: OptimizeConfig
    jobs: _containers.RepeatedCompositeFieldContainer[OptimizeJobMeta]
    def __init__(
        self,
        type: _Optional[str] = ...,
        config: _Optional[_Union[OptimizeConfig, _Mapping]] = ...,
        jobs: _Optional[_Iterable[_Union[OptimizeJobMeta, _Mapping]]] = ...,
    ) -> None: ...

class PodResource(_message.Message):
    __slots__ = ["memory", "cpu", "gpu", "gpu_type", "priority"]
    MEMORY_FIELD_NUMBER: _ClassVar[int]
    CPU_FIELD_NUMBER: _ClassVar[int]
    GPU_FIELD_NUMBER: _ClassVar[int]
    GPU_TYPE_FIELD_NUMBER: _ClassVar[int]
    PRIORITY_FIELD_NUMBER: _ClassVar[int]
    memory: int
    cpu: float
    gpu: float
    gpu_type: str
    priority: str
    def __init__(
        self,
        memory: _Optional[int] = ...,
        cpu: _Optional[float] = ...,
        gpu: _Optional[float] = ...,
        gpu_type: _Optional[str] = ...,
        priority: _Optional[str] = ...,
    ) -> None: ...

class TaskGroupResource(_message.Message):
    __slots__ = ["count", "resource"]
    COUNT_FIELD_NUMBER: _ClassVar[int]
    RESOURCE_FIELD_NUMBER: _ClassVar[int]
    count: int
    resource: PodResource
    def __init__(
        self,
        count: _Optional[int] = ...,
        resource: _Optional[_Union[PodResource, _Mapping]] = ...,
    ) -> None: ...

class JobResource(_message.Message):
    __slots__ = ["task_group_resources", "pod_resources"]

    class TaskGroupResourcesEntry(_message.Message):
        __slots__ = ["key", "value"]
        KEY_FIELD_NUMBER: _ClassVar[int]
        VALUE_FIELD_NUMBER: _ClassVar[int]
        key: str
        value: TaskGroupResource
        def __init__(
            self,
            key: _Optional[str] = ...,
            value: _Optional[_Union[TaskGroupResource, _Mapping]] = ...,
        ) -> None: ...

    class PodResourcesEntry(_message.Message):
        __slots__ = ["key", "value"]
        KEY_FIELD_NUMBER: _ClassVar[int]
        VALUE_FIELD_NUMBER: _ClassVar[int]
        key: str
        value: PodResource
        def __init__(
            self,
            key: _Optional[str] = ...,
            value: _Optional[_Union[PodResource, _Mapping]] = ...,
        ) -> None: ...

    TASK_GROUP_RESOURCES_FIELD_NUMBER: _ClassVar[int]
    POD_RESOURCES_FIELD_NUMBER: _ClassVar[int]
    task_group_resources: _containers.MessageMap[str, TaskGroupResource]
    pod_resources: _containers.MessageMap[str, PodResource]
    def __init__(
        self,
        task_group_resources: _Optional[
            _Mapping[str, TaskGroupResource]
        ] = ...,
        pod_resources: _Optional[_Mapping[str, PodResource]] = ...,
    ) -> None: ...

class JobOptimizePlan(_message.Message):
    __slots__ = ["timestamp", "resource", "job"]
    TIMESTAMP_FIELD_NUMBER: _ClassVar[int]
    RESOURCE_FIELD_NUMBER: _ClassVar[int]
    JOB_FIELD_NUMBER: _ClassVar[int]
    timestamp: int
    resource: JobResource
    job: OptimizeJobMeta
    def __init__(
        self,
        timestamp: _Optional[int] = ...,
        resource: _Optional[_Union[JobResource, _Mapping]] = ...,
        job: _Optional[_Union[OptimizeJobMeta, _Mapping]] = ...,
    ) -> None: ...

class JobOptimization(_message.Message):
    __slots__ = ["timestamp", "config", "plan", "job_states"]
    TIMESTAMP_FIELD_NUMBER: _ClassVar[int]
    CONFIG_FIELD_NUMBER: _ClassVar[int]
    PLAN_FIELD_NUMBER: _ClassVar[int]
    JOB_STATES_FIELD_NUMBER: _ClassVar[int]
    timestamp: int
    config: OptimizeConfig
    plan: JobOptimizePlan
    job_states: _containers.RepeatedCompositeFieldContainer[JobState]
    def __init__(
        self,
        timestamp: _Optional[int] = ...,
        config: _Optional[_Union[OptimizeConfig, _Mapping]] = ...,
        plan: _Optional[_Union[JobOptimizePlan, _Mapping]] = ...,
        job_states: _Optional[_Iterable[_Union[JobState, _Mapping]]] = ...,
    ) -> None: ...

class Response(_message.Message):
    __slots__ = ["success", "reason"]
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    REASON_FIELD_NUMBER: _ClassVar[int]
    success: bool
    reason: str
    def __init__(
        self, success: bool = ..., reason: _Optional[str] = ...
    ) -> None: ...

class OptimizeResponse(_message.Message):
    __slots__ = ["response", "job_optimize_plans"]
    RESPONSE_FIELD_NUMBER: _ClassVar[int]
    JOB_OPTIMIZE_PLANS_FIELD_NUMBER: _ClassVar[int]
    response: Response
    job_optimize_plans: _containers.RepeatedCompositeFieldContainer[
        JobOptimizePlan
    ]
    def __init__(
        self,
        response: _Optional[_Union[Response, _Mapping]] = ...,
        job_optimize_plans: _Optional[
            _Iterable[_Union[JobOptimizePlan, _Mapping]]
        ] = ...,
    ) -> None: ...

class JobMetricsRequest(_message.Message):
    __slots__ = ["job_uuid"]
    JOB_UUID_FIELD_NUMBER: _ClassVar[int]
    job_uuid: str
    def __init__(self, job_uuid: _Optional[str] = ...) -> None: ...

class JobMetricsResponse(_message.Message):
    __slots__ = ["response", "job_metrics"]
    RESPONSE_FIELD_NUMBER: _ClassVar[int]
    JOB_METRICS_FIELD_NUMBER: _ClassVar[int]
    response: Response
    job_metrics: str
    def __init__(
        self,
        response: _Optional[_Union[Response, _Mapping]] = ...,
        job_metrics: _Optional[str] = ...,
    ) -> None: ...
